package com.mmy.controller.plane;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONObject;
import com.mmy.domain.constzone.TConstZone;
import com.mmy.domain.plane.TPlaneAirport;
import com.mmy.domain.plane.VPlaneAirport;
import com.mmy.domain.sys.TSysUser;
import com.mmy.service.impl.constzone.ConstZoneServiceImpl;
import com.mmy.service.plane.impl.PlaneAirportServiceImpl;

/**
 * 类的介绍：机场信息
 *
 * @author shangzl
 * @date 创建日期：
 * @version 1.0
 */

@Controller
public class PlaneAirportController {

	@Autowired
	PlaneAirportServiceImpl planeAirportServiceImpl;
	@Autowired
	ConstZoneServiceImpl constZoneServiceImpl;

	/**
	 * 函数功能说明：后台机场信息管理 显示机场基本信息
	 *
	 * @param 参数说明 vPlaneAirport
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl 修改人hanxl
	 * @date 创建日期 2020.11.18 修改时间2021.03.16
	 */
	@RequestMapping("/backplaneairportindex")
	public String backPlaneAirportIndex(HttpServletRequest request, Model model) {
//创建的航空公司信息不论谁登录显示全部  

		List<VPlaneAirport> lstPlaneAirport = planeAirportServiceImpl.findAll();
		model.addAttribute("lstPlaneAirport", lstPlaneAirport);
		return "webbackground/plane/PlaneAirportIndex";
	}

	/**
	 * 函数功能说明： 异步--航空公司信息列表数据
	 * 
	 * @param 参数说明 vPlaneOrg
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 *
	 */
	@RequestMapping("/backplaneairportjson")
	@ResponseBody
	public String backPlaneAirportJson(HttpServletRequest request, Model model) {

		// 接收的分页信息处理
		int page = Integer.parseInt(request.getParameter("page"));
		int rows = Integer.parseInt(request.getParameter("rows"));
		int startIndex = (page - 1) * rows;
		int count = rows;
		// 搜索条件

		String strAirportName = request.getParameter("airPortName");

		// 表格数据
		List<VPlaneAirport> lstPlaneAirport = planeAirportServiceImpl.findSearch(strAirportName, startIndex, count);

		model.addAttribute("lstPlaneAirport", lstPlaneAirport);
		// 数据总数量
		int total = planeAirportServiceImpl.queryCount(strAirportName);
		Map<String, Object> ret = new HashMap<String, Object>();
		ret.put("rows", lstPlaneAirport);
		ret.put("total", total);
		return JSONObject.toJSONString(ret);
	}

	/**
	 * 函数功能说明：后台机场信息管理创建国内机场 进入页面
	 *
	 * @param 参数说明 vPlaneAirport
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl 修改人hanxl
	 * @date 创建日期 2020.11.18 修改时间2021.03.16
	 */
	@RequestMapping(value = "/backcreateplaneairport")
	public String backCreatePlaneAirport(Model model) {
		// 查询所有省
		List<TConstZone> lstZoneProvince = constZoneServiceImpl.findAllProvince();
		model.addAttribute("lstZoneProvince", lstZoneProvince);
		return "webbackground/plane/CreatePlaneAirport";
	}

	/**
	 * 函数功能说明： 新建机场信息
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl 修改人 hanxl
	 * @date 创建日期修改时间2021.03.17
	 */

	@RequestMapping(value = "/backsavecreateplaneairport")
	public String backSaveCreatePlaneAirport(TPlaneAirport tPlaneAirport, HttpSession session) {
		TSysUser sessionSysUser = (TSysUser) session.getAttribute("tSysUser");
		planeAirportServiceImpl.createPlaneAirPort(tPlaneAirport, sessionSysUser);
		return "redirect:backplaneairportindex";

	}

	/**
	 * 函数功能说明：后台机场信息管理创建国外机场 进入页面
	 *
	 * @param 参数说明 vPlaneAirport
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl 修改人hanxl
	 * @date 创建日期 2020.11.18 修改时间2021.03.16
	 */
	@RequestMapping(value = "/backcreateoutplaneairport")
	public String backCreateOutPlaneAirport(Model model) {
		// 查询所有的洲
		List<TConstZone> lstZoneContinent = constZoneServiceImpl.findAllContinent();
		model.addAttribute("lstZoneContinent", lstZoneContinent);
		return "webbackground/plane/CreateOutPlaneAirport";
	}

	/**
	 * 函数功能说明： 删除机场信息
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期
	 */

	@PostMapping("/delplaneairport")
	@ResponseBody
	public String DelPlaneAirport(String checkList) {

		String[] checklist = checkList.split(",");
		List<Integer> lstAirportID = new ArrayList<>();

		for (String str : checklist) {
			lstAirportID.add(Integer.parseInt(str));
		}

		// tPlaneAirportServiceImpl.delPlaneAirport(lstAirportID);

		return "webbackground/plane/planeairport";
	}

	/**
	 * 函数功能说明： 修改机场信息
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl 修改人hanxl
	 * @date 创建日期 修改时间2021.03.17
	 */

	@RequestMapping(value = "/toupdateplaneairport")
	public String toUpdatePlaneAirport(HttpServletRequest request, Model model) {

		int iAirportID = Integer.parseInt(request.getParameter("iAirportID"));

		TPlaneAirport dbPlaneAirport = planeAirportServiceImpl.findByAirportID(iAirportID);
		model.addAttribute("dbPlaneAirport", dbPlaneAirport);

		if (dbPlaneAirport.getZoneID() < 900000) {
			// 查询所有省
			List<TConstZone> lstZoneProvince = constZoneServiceImpl.findAllProvince();
			model.addAttribute("lstZoneProvince", lstZoneProvince);
			// 获取机场所在的省
			int strProvinceID = constZoneServiceImpl.findProvince(dbPlaneAirport.getZoneID()).getZoneID();
			model.addAttribute("strProvinceID", strProvinceID);
			// 查询机场所在省 所有的市
			List<TConstZone> lstZoneCity = constZoneServiceImpl.findCities(dbPlaneAirport.getZoneID());
			model.addAttribute("lstZoneCity", lstZoneCity);
		} else {
			// 查询所有的洲
			List<TConstZone> lstZoneContinent = constZoneServiceImpl.findAllContinent();
			model.addAttribute("lstZoneContinent", lstZoneContinent);
			// 获取机场所在的洲
			int strContinentID = constZoneServiceImpl.findContinent(dbPlaneAirport.getZoneID()).getZoneID();
			model.addAttribute("strContinentID", strContinentID);
			// 查询机场所在洲 所有的国家
			List<TConstZone> lstZoneCountry = constZoneServiceImpl.findCountriess(dbPlaneAirport.getZoneID());
			model.addAttribute("lstZoneCountry", lstZoneCountry);
		}
		return "webbackground/plane/UpdatePlaneAirport";

	}

	/**
	 * 函数功能说明： 修改机场信息提交
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl 修改人hanxl
	 * @date 创建日期修改时间2021.03.17
	 */
	@RequestMapping(value = "/backsaveupdateplaneairport")
	public String backSaveUpdatePlaneAirport(TPlaneAirport tPlaneAirport, HttpSession session) {
		TSysUser sessionSysUser = (TSysUser) session.getAttribute("tSysUser");
		planeAirportServiceImpl.updatePlaneAirport(tPlaneAirport, sessionSysUser);
		return "redirect:backplaneairportindex";

	}

	/**
	 * 函数功能说明： 根据地区查询所在的机场
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人hanxl
	 * @date 创建日期2021.03.17
	 */
	@PostMapping("/searchairportID")
	@ResponseBody
	public Map<String, Object> searchAirPortID(HttpServletRequest request) {
		Map<String, Object> data = new HashMap<>();
		List<VPlaneAirport> lstPlaneAirport = planeAirportServiceImpl
				.findByZoneID(Integer.parseInt(request.getParameter("iZoneID")));
		data.put("lstAir", lstPlaneAirport);
		return data;

	}

}
